iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Kubernetes

Kubernetes 中關於網路的二三事系列 第 17

Day 17 用NetworkPolicy畫出Kubernetes的安全界線

  • 分享至 

  • xImage
  •  

今天,我們要來聊聊 Kubernetes 中一個非常重要,但常常被忽視的安全利器 —— NetworkPolicy。想像一下,如果 Kubernetes 集群是一個熱鬧的城市,那麼 NetworkPolicy 就是這個城市的交通規則和安全柵欄。它能幫我們在這個繁忙的"網路城市"中畫出清晰的安全界線,讓每個 Pod 都能安全地生活和工作。

首先,讓我們來認識一下什麼是 NetworkPolicy。

NetworkPolicy 是 Kubernetes 提供的一種資源,用於定義 Pod 之間如何進行網路通信。它就像是給每個 Pod 配備的一個小管家,負責決定誰可以進來,誰不能進來,以及 Pod 可以跟誰說話。

那麼,為什麼我們需要 NetworkPolicy 呢?

想像一下,如果我們的 Kubernetes 集群是一個沒有交通規則的城市,車輛可以隨意行駛,行人可以任意穿越馬路,那會是多麼可怕的景象!同樣的,如果我們的 Pod 之間沒有任何網路限制,任何 Pod 都可以訪問任何其他 Pod,這無疑會帶來巨大的安全風險。

NetworkPolicy 主要負責:

  • 入站流量控制:決定哪些流量可以進入 Pod,就像決定誰可以進入你的家。
  • 出站流量控制:決定 Pod 可以訪問哪些目標,就像決定你可以去哪些地方。
  • 協議和端口控制:可以精確到控制特定的協議和端口,就像指定你只能用特定的鑰匙開特定的門。

讓我們來看一個簡單的 NetworkPolicy 例子:

apiVersion: networking.k8s.io/v1  
kind: NetworkPolicy  
metadata:  
  name: allow-frontend-to-backend  
spec:  
  podSelector:  
    matchLabels:  
      app: backend  
  ingress:  
  - from:  
    - podSelector:  
        matchLabels:  
          app: frontend  
    ports:  
    - protocol: TCP  
      port: 8080  

這個 NetworkPolicy 做了什麼呢?它告訴 Kubernetes:

  1. 這個規則適用於所有帶有app: backend標籤的 Pod(我們的目標 Pod)
  2. 只允許帶有app: frontend標籤的 Pod 訪問目標 Pod
  3. 只允許通過 TCP 協議訪問目標 Pod 的 8080 端口
    就像是告訴保安:只允許戴著"前台"徽章的人進入"後台"辦公室的特定門。

使用 NetworkPolicy 帶來了許多好處:

  • 最小權限原則:每個 Pod 只能訪問它需要的資源,大大降低了安全風險。
  • 隔離環境:可以輕鬆創建隔離的環境,例如開發、測試和生產環境。
  • 可視化網路流量:通過定義 NetworkPolicy,我們可以清晰地看到系統中的網路流量應該如何流動。

然而,使用 NetworkPolicy 也面臨一些挑戰:

  • 複雜性:在大型系統中,管理大量的 NetworkPolicy 可能變得複雜。
  • 性能影響:過多的 NetworkPolicy 可能會對網路性能產生輕微影響。
  • 默認行為:需要注意,如果沒有任何 NetworkPolicy,默認情況下所有 Pod 都是可以互相訪問的。

好啦,今天先講到這。各位,明天見!


上一篇
Day 16 從Pause容器看Pod內容器間通信機制
下一篇
Day 18 Kubernetes DNS:為服務發現而生
系列文
Kubernetes 中關於網路的二三事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言